home *** CD-ROM | disk | FTP | other *** search
/ CD Actual Thematic 29 / CDT29.iso / e-Mail / WorldClient Pro 2.2.3 / wcsetup.exe / WEBHELP.ZIP / hhapplet / FTSParser.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-10-21  |  5.4 KB  |  342 lines

  1. package hhapplet;
  2.  
  3. import java.applet.Applet;
  4. import java.awt.Label;
  5. import java.io.IOException;
  6. import java.net.URL;
  7. import java.util.Vector;
  8. import sitemap.MyBufferedInputStream;
  9.  
  10. public class FTSParser extends Thread {
  11.    protected Applet m_applet;
  12.    protected FTSPane m_spSearch;
  13.    protected FTSSearcher m_ftsSearcher;
  14.    protected Thread m_Thread;
  15.    protected MyBufferedInputStream m_is;
  16.    protected int m_nTotalBytesRead;
  17.    protected int m_nOffset = 0;
  18.    protected String m_strFileName;
  19.    protected URL m_urlDocBase;
  20.  
  21.    public FTSSearcher getSearcher() {
  22.       return this.m_ftsSearcher;
  23.    }
  24.  
  25.    public void parse() {
  26.       this.run();
  27.    }
  28.  
  29.    public Thread parseInSeparateThread(String var1, URL var2) {
  30.       this.m_strFileName = var1;
  31.       this.m_urlDocBase = var2;
  32.       ((Thread)this).setPriority(4);
  33.       ((Thread)this).start();
  34.       return this;
  35.    }
  36.  
  37.    protected boolean advancePastQuoteInStream() {
  38.       try {
  39.          byte var1;
  40.          do {
  41.             var1 = (byte)this.m_is.read();
  42.             ++this.m_nTotalBytesRead;
  43.          } while(var1 != 10 && var1 != 34);
  44.  
  45.          if (var1 == 34) {
  46.             return true;
  47.          } else {
  48.             return false;
  49.          }
  50.       } catch (IOException var2) {
  51.          return false;
  52.       }
  53.    }
  54.  
  55.    protected boolean advancePastCommaInStream() {
  56.       try {
  57.          byte var1;
  58.          do {
  59.             var1 = (byte)this.m_is.read();
  60.             ++this.m_nTotalBytesRead;
  61.          } while(var1 != 10 && var1 != 44);
  62.  
  63.          if (var1 == 44) {
  64.             return true;
  65.          } else {
  66.             return false;
  67.          }
  68.       } catch (IOException var2) {
  69.          return false;
  70.       }
  71.    }
  72.  
  73.    public FTSParser(Applet var1) {
  74.       this.m_applet = var1;
  75.       this.m_ftsSearcher = new FTSSearcher(this.m_applet);
  76.       this.m_spSearch = new FTSPane(this.m_applet, this.m_ftsSearcher);
  77.       this.m_ftsSearcher.setPane(this.m_spSearch);
  78.    }
  79.  
  80.    protected boolean advancePastEOLInStream() {
  81.       try {
  82.          byte var1;
  83.          do {
  84.             var1 = (byte)this.m_is.read();
  85.             ++this.m_nTotalBytesRead;
  86.          } while(var1 != 10);
  87.  
  88.          return true;
  89.       } catch (IOException var2) {
  90.          return false;
  91.       }
  92.    }
  93.  
  94.    protected String getStringFromStream() {
  95.       String var1 = new String();
  96.  
  97.       try {
  98.          byte var2 = (byte)this.m_is.read();
  99.          ++this.m_nTotalBytesRead;
  100.          if (var2 == 34) {
  101.             var2 = (byte)this.m_is.read();
  102.             ++this.m_nTotalBytesRead;
  103.          }
  104.  
  105.          while(var2 != 34) {
  106.             if (var2 < 0) {
  107.                var1 = var1 + (char)(var2 + 256);
  108.             } else {
  109.                var1 = var1 + (char)var2;
  110.             }
  111.  
  112.             var2 = (byte)this.m_is.read();
  113.             ++this.m_nTotalBytesRead;
  114.          }
  115.  
  116.          return var1;
  117.       } catch (IOException var3) {
  118.          return null;
  119.       }
  120.    }
  121.  
  122.    protected String getStopWordFromStream() {
  123.       new String();
  124.       String var1 = this.getStringFromStream();
  125.       this.advancePastEOLInStream();
  126.       return var1;
  127.    }
  128.  
  129.    protected String getKeywordNameFromStream() {
  130.       String var1 = this.getStringFromStream();
  131.       this.advancePastCommaInStream();
  132.       return var1;
  133.    }
  134.  
  135.    protected String getTopicTitleFromStream() {
  136.       new String();
  137.       String var1 = this.getStringFromStream();
  138.       this.advancePastCommaInStream();
  139.       return var1;
  140.    }
  141.  
  142.    protected String getTopicURLFromStream() {
  143.       new String();
  144.       String var1 = this.getStringFromStream();
  145.       this.advancePastEOLInStream();
  146.       return var1;
  147.    }
  148.  
  149.    public void UpdateStreamStatus() {
  150.       this.m_applet.showStatus("Reading Search Data [" + this.m_nTotalBytesRead + "]");
  151.    }
  152.  
  153.    public void run() {
  154.       this.m_spSearch.getEditBox().enable(false);
  155.  
  156.       try {
  157.          this.m_is = new MyBufferedInputStream(URLFileHandler.makeURL(this.m_urlDocBase, this.m_strFileName, (String)null).openStream());
  158.       } catch (Exception var10) {
  159.          this.m_applet.add("Center", new Label("Can't open URL or file " + ((Throwable)var10).getMessage()));
  160.          return;
  161.       }
  162.  
  163.       this.m_nTotalBytesRead = 0;
  164.       int var4 = this.getCountFromStream("TOPICS=");
  165.       this.UpdateStreamStatus();
  166.       this.m_ftsSearcher.setTopicCount(var4);
  167.  
  168.       for(int var1 = 0; var1 < var4; ++var1) {
  169.          String var2 = this.getTopicTitleFromStream();
  170.          String var3 = this.getTopicURLFromStream();
  171.          this.m_ftsSearcher.setTopicData(var1, var2, var3);
  172.          if (var1 % 200 == 0) {
  173.             this.UpdateStreamStatus();
  174.          }
  175.       }
  176.  
  177.       int var7 = this.getCountFromStream("KEYWORDS=");
  178.       this.UpdateStreamStatus();
  179.       this.m_ftsSearcher.setKeywordCount(var7);
  180.  
  181.       for(int var11 = 0; var11 < var7; ++var11) {
  182.          String var6 = this.getKeywordNameFromStream();
  183.          if (var6 == null) {
  184.             Object var8 = null;
  185.          } else {
  186.             String var13 = var6.toLowerCase();
  187.          }
  188.  
  189.          int[] var5 = this.getKeywordLinksFromStream();
  190.          this.m_ftsSearcher.setKeywordData(var11, var6, var5);
  191.          if (var11 % 200 == 0) {
  192.             this.UpdateStreamStatus();
  193.          }
  194.       }
  195.  
  196.       int var9 = this.getCountFromStream("STOPWORDS=");
  197.       this.UpdateStreamStatus();
  198.       this.m_ftsSearcher.setStopWordCount(var9);
  199.  
  200.       for(int var12 = 0; var12 < var9; ++var12) {
  201.          String var14 = this.getStopWordFromStream();
  202.          this.m_ftsSearcher.setStopWord(var12, var14);
  203.          if (var12 % 200 == 0) {
  204.             this.UpdateStreamStatus();
  205.          }
  206.       }
  207.  
  208.       if (this.m_spSearch != null && this.m_spSearch.getList() != null) {
  209.          this.m_spSearch.getList().clear();
  210.       }
  211.  
  212.       if (this.m_spSearch != null && this.m_spSearch.getforappleList() != null) {
  213.          this.m_spSearch.getforappleList().clear();
  214.          this.m_spSearch.paintComponents(this.m_spSearch.getGraphics());
  215.       }
  216.  
  217.       this.m_spSearch.ShowList();
  218.       this.m_applet.showStatus("Done");
  219.       this.m_spSearch.getEditBox().enable(true);
  220.       this.m_spSearch.getEditBox().requestFocus();
  221.    }
  222.  
  223.    public FTSPane getFTS() {
  224.       return this.m_spSearch;
  225.    }
  226.  
  227.    protected Integer getIntegerFromStream() {
  228.       String var1 = new String();
  229.  
  230.       try {
  231.          byte var2 = (byte)this.m_is.read();
  232.          ++this.m_nTotalBytesRead;
  233.  
  234.          while(var2 == 32) {
  235.             var2 = (byte)this.m_is.read();
  236.             ++this.m_nTotalBytesRead;
  237.          }
  238.  
  239.          while(var2 >= 48 && var2 <= 57) {
  240.             if (var2 < 0) {
  241.                var1 = var1 + (char)(var2 + 256);
  242.             } else {
  243.                var1 = var1 + (char)var2;
  244.             }
  245.  
  246.             var2 = (byte)this.m_is.read();
  247.             ++this.m_nTotalBytesRead;
  248.          }
  249.  
  250.          if (var2 == 10) {
  251.             return null;
  252.          } else {
  253.             Object var3 = null;
  254.  
  255.             try {
  256.                var6 = new Integer(var1);
  257.             } catch (NumberFormatException var4) {
  258.                var6 = null;
  259.                System.out.println("Error at Byte #" + this.m_nTotalBytesRead + " in stream.");
  260.             }
  261.  
  262.             return var6;
  263.          }
  264.       } catch (IOException var5) {
  265.          return null;
  266.       }
  267.    }
  268.  
  269.    protected int getCountFromStream(String var1) {
  270.       String var2 = new String();
  271.       boolean var4 = false;
  272.       int var5 = 0;
  273.  
  274.       try {
  275.          byte var3 = (byte)this.m_is.read();
  276.          ++this.m_nTotalBytesRead;
  277.  
  278.          while(!var4) {
  279.             while(var3 != 91) {
  280.                var3 = (byte)this.m_is.read();
  281.                ++this.m_nTotalBytesRead;
  282.             }
  283.  
  284.             var3 = (byte)this.m_is.read();
  285.             ++this.m_nTotalBytesRead;
  286.  
  287.             while(var5 < var1.length() && var3 == var1.charAt(var5) && var3 != 93) {
  288.                var3 = (byte)this.m_is.read();
  289.                ++this.m_nTotalBytesRead;
  290.                ++var5;
  291.             }
  292.  
  293.             if (var5 == var1.length()) {
  294.                var4 = true;
  295.             } else {
  296.                var5 = 0;
  297.             }
  298.          }
  299.  
  300.          while(var3 >= 48 && var3 <= 57) {
  301.             if (var3 < 0) {
  302.                var2 = var2 + (char)(var3 + 256);
  303.             } else {
  304.                var2 = var2 + (char)var3;
  305.             }
  306.  
  307.             var3 = (byte)this.m_is.read();
  308.             ++this.m_nTotalBytesRead;
  309.          }
  310.  
  311.          if (var3 == 10) {
  312.             return 0;
  313.          } else {
  314.             this.advancePastEOLInStream();
  315.             return Integer.parseInt(var2);
  316.          }
  317.       } catch (IOException var6) {
  318.          return 0;
  319.       }
  320.    }
  321.  
  322.    protected int[] getKeywordLinksFromStream() {
  323.       Vector var1 = new Vector();
  324.       Object var2 = null;
  325.  
  326.       do {
  327.          var5 = this.getIntegerFromStream();
  328.          if (var5 != null) {
  329.             var1.addElement(var5);
  330.          }
  331.       } while(var5 != null);
  332.  
  333.       int[] var3 = new int[var1.size()];
  334.  
  335.       for(int var4 = 0; var4 < var3.length; ++var4) {
  336.          var3[var4] = (Integer)var1.elementAt(var4);
  337.       }
  338.  
  339.       return var3;
  340.    }
  341. }
  342.